Последние изменения - Поиск:

edit SideBar

ИнкрементнаяРазработкаИМодули

Зависимости модулей

Пусть модуль «г» импортирует модуль «д» (в г.Mod написано «IMPORTS д». Тогда модуль д называется зависимостью модуля г, модуль г называется зависимым от модуля д или клиентом модуля д. Модули образуют дерево (или лес) по зависимостям, циклические зависимости запрещены.

Загрузка модуля

Модуль автоматически загружается, если:

  • вызывается команда из этого модуля
  • загружается модуль - клиент данного
  • при вызове Modules.ThisModule, если модуль не загружен

В процессе загрузки модуля выполняются действия в теле модуля, в части BEGIN ... END ИмяМодуля.

Цикл инкрементной разработки с заменой модулей

Для инкрементной разработки используется цикл:

  • редактируем исходный текст
  • компилируем модуль, перезаписывается файл модуля на диске
  • выгружаем старый модуль из памяти (если он загружен, см. пункт "выгрузка модулей")
  • делаем, чтобы модуль загрузился снова

Выгрузка модуля происходит по инициативе пользователя. Модуль может быть выгружен только в случае, если не загружен ни один зависящий от него модуль. Поэтому для выгрузки модулей, критичных для работоспособности системы, придётся пересобрать и перезагрузить систему целиком, см. Сборка

Выгрузка модулей

Для выгрузки модуля нужно, чтобы все его клиенты (зависящие модули) были выгружены. Для выгрузки модуля изнутри PET и TFPET можно использовать Ctrl-U. , но он не сможет выгрузить зависимые модули. Для для выгрузки всех модулей, зависящих от данного, есть спец. команда.

На конец 2012 и до конца 2016 - это команда

SystemTools.FreeDownTo ИмяМодуляБезКавычекИРасширения ~

- её можно прямо так вводить в консоли

Если нужно выгрузить несколько модулей с зависимостями, то лучше это делать так:

SystemTools.DoCommands
  SystemTools.FreeDownTo ИмяМодуляБезКавычекИРасширения1 ~
  SystemTools.FreeDownTo ИмяМодуляБезКавычекИРасширения2 ~~

В принципе команда FreeDownTo позволяет писать несколько имён модулей, но это не работает или работает ненадёжно.

Настройки компилятора

При инкрементной (как и при любой) разработке, компилятору нужно правильно передавать опции. См. Передача компилятору опций

Действия при выгрузке модулей

Можно установить действия, выполняемые перед выгрузкой модуля, см. Modules.InstallTermHandler - это может вызывать проблемы при выгрузке модулей.

Править - История - Печать - Последние изменения - Поиск
Редакция от 07.02.2020 09:48